当函数尤其是多维函数不容易求解时,我们会考虑使用智能算法来帮助求近似最优解,比较知名的算法包括模拟退火算法、遗传算法、粒子群算法、蜂群算法等。这些算法来自物理或生物界的启示,比如模拟进化过程中的优胜劣汰(遗传算法)或者鸟群寻找食物源。在一次又一次的更新和迭代过程中更新单个解或多个解的值,完成很多次迭代之后最终的解近似最优的解(也可能确实能找到最优解,但我们并不确定)。
这些算法也称之为启发式算法,从其他地方获得启发,来求解数学问题。这些算法用步骤和数学表达刻画了现象背后的重要方面,堪称建模的典范。除了运用这些算法求最优解以外,我们直接运用这些算法来模拟我们感兴趣的一些现象也未尝不可!
今天我在思考如何刻画一个学生从小到大各方面的成长时,偶然想到:如果将每个人各方面的状态写作多维向量,分量可以包括健康、能力、年龄、兴趣等,这个项链随着时间而发生变化。引起状态向量变化的原因可能有家庭的熏陶、学校的教育、同伴之间的相互学习、自己的反思等等,而这些因素或许可以借助启发式算法的一些操作将其刻画。比如学校的教育给人带来的影响,可以采用类似于粒子群算法中所有粒子向量向当前时刻“适应度”最好的向量移动的过程来进行模拟(见贤思齐);也可以用类似于遗传算法中的优胜劣汰、轮盘赌等方法模拟求学阶段的选拔性考试对人的影响等等。太好了!